iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0

我們開始說明 for loop的部分。

在訓練模型時,我們需要大量的data,這些data來自於train_loader。但是,我們並非一次全部倒入所有資料,進行訓練,而是每次一批資料倒入訓練。每一批的筆數,在train_loader的batch_size參數中設定。每次一批的好處,在於部分資料訓練後,可立即進行最佳化的調整,以及測試驗證(validation)模型的準確性。

進入主題,看程式for loop部分:

	for epoch in range(1, args['epochs'] + 1):

通常,我們若寫 range(10), 表示[0..9]。但我們的初始值為1,所以尾端的最大值得加1。整個迴圈數就會有1至epoch那麼多次loop。

接下來,進入train() function:

	train(args, model, device, train_loader, optimizer, epoch)

我們需要給它的資訊有--參數、模型、device(模型及資料都放在此處,才能執行)、訓練用資料、優化器以及迴圈數epoch。

此次epoch中,訓練及優化調整後,交由 test(…)測試驗證(validation)模型的準確性:

   test_acc = test(args, model, device, test_loader)

同樣的,我們需餵入參數,model(內含優化過的weights),device以及驗證資料test_loader。
Test()所產生的結果(accuracy),交給 test_acc做後續的處理。
接著,test_acc送入NNI,讓NNI可進行後續的比較、優化超參,或是中途停止不必要的計算。

  nni.report_intermediate_result(test_acc)

所有的epochs跑完後,將最後的結果也給NNI做後續的處理--比較、優化超參,或是中途停止不必要的計算。

 nni.report_final_result(test_acc)

Def main() 到此結束。
接下來我們將說明 train(),test()的細部。不耐煩的讀者,可跳過此2大部分。


上一篇
模型的內容05 def main()
下一篇
模型的內容07 train()
系列文
新手一起來Azure上玩 NNI (auto-ML的一種)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言